from abc import ABC, abstractmethod


class Product(ABC):
    @abstractmethod
    def geturl(self):
        pass

    @abstractmethod
    def callback(self):
        pass


# 具体产品类
class Dingding(Product):
    def geturl(self):
        return "使用产品A"

    def callback(self):
        return "使用产品A"


class Weibo(Product):
    def geturl(self):
        return "使用产品A"

    def callback(self):
        return "使用产品A"

        # 创建工厂类


class ProductFactory:
    def create_product(self, product_type):
        if product_type == "weibo":
            return Weibo()
        elif product_type == "dingding":
            return Dingding()
        else:
            raise ValueError("无效的产品类型")

        # 使用工厂类创建产品实例


factory = ProductFactory()
product_a = factory.create_product("weibo")
print(product_a.geturl())  # 输出: 使用产品A
url = product_a.geturl()


product_b = factory.create_product("B")
print(product_b.geturl())  # 输出: 使用产品B

# 尝试创建一个不存在的产品类型
# 这会抛出一个ValueError异常
# product_c = factory.create_product("C")